package com.class05.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

/**
 * @ClassDescription:
 * 业务层配置类 ：service，aop，tx
 * 1.service
 * 2.开启aop注解支持  aspect ：@Before  @After
 * @AfterReturning  @AfterThrowing @Around  @Aspect  @Order
 * 3.tx声明式事务管理：
 * 1）.对应的事务管理器实现
 * [TransactionManagement DataSource...Hibernate..jpa]
 * 2）.开启事务注解支持 @Transactional
 *
 * @JdkVersion: 17
 * @Author: yxy
 * @Created: 2023/12/20 17:13
 */
@Configuration
@ComponentScan({"com.class05.service"})
@EnableAspectJAutoProxy
@EnableTransactionManagement
public class ServiceJavaConfig {

    @Bean
    public TransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager dataSourceTransactionManager
                = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;

    }

}
